# 在爬虫中使用正则表达式进行数据的筛选，需要用到re模块
import re
# findall表示全文搜索，默认将返回的内容放在列表中
# findall(指定需要使用的正则表达式，需要过滤的内容)
lst=re.findall(r"\d+","联通：10010，移动：10086")
print("findall进行筛选后的内容")
print(lst)
# finditer表示全文筛选，会返回一个迭代器
lst1=re.finditer(r"\d+","联通：10010，移动：10086")
print("finditer进行筛选后的内容")
# 对迭代器的内容需要遍历解析
for item in lst1:
    # 拿到迭代器中的具体内容需要调用group进行解析
    print(item.group())
    pass
# search找到文中的第一个内容即返回
lst2=re.search(r"\d+","联通：10010，移动：10086")
print("search进行筛选后的内容")
print(lst2.group())
# match表示从头进行搜索 相当于在表达式前面加上了一个^
lst3=re.match(r"\d+","10010:联通，移动：10086")
print("match进行筛选后的内容")
print(lst3)
# compile预处理，可以将正则表达式保存起来，后面方便复用
print("compile进行操作")
obj=re.compile(r"\d+")
lst4=obj.finditer("10010:联通，移动：10086")
for item in lst4:
    # 拿到迭代器中的具体内容需要调用group进行解析
    print(item.group())
    pass

str="""
<div id='zjl' class='star'>周杰伦</div>
<div id='zyl' class='star'>蔡依林</div>
<div id='ljj' class='star'>林俊杰</div>
<div id='xzq' class='star'>薛之谦</div>
<div id='syz' class='star'>孙燕姿</div>
"""
# re.S: 让.能匹配换行符
# 将指定内容筛选出来后保存起来可以将表达式中间的部分括起来使用？P<保存下来的数据的临时名字>
#  (?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容
star=re.compile(r"<div id='(?P<idname>.*?)' class='star'>(?P<name>.*?)</div>",re.S)
stars=star.finditer(str)
for item in stars:
    print(item.group("name"))
    print(item.group("idname"))



